![]() |
![]() |
![]() | |
![]() ![]() ![]() ![]()
╠φεπε∩ε≥ε≈φε±≥ⁿ |
╨σαδΦτα÷Φ ∞φεπε∩ε≥ε≈φε±≥Φ Γ JavaΣεδµφ√ Γε±∩εδⁿτεΓα≥ⁿ± Ωδα±±ε∞ java.lang.Thread. ┬ ²≥ε∞ Ωδα±±σ ε∩≡σΣσδσφ√ Γ±σ ∞σ≥εΣ√, φσεß⌡εΣΦ∞√σ Σδ ±ετΣαφΦ ∩ε≥εΩεΓ, ≤∩≡αΓδσφΦ Φ⌡ ±ε±≥ε φΦσ∞ Φ ±Φφ⌡≡εφΦτα÷ΦΦ.╩αΩ ∩εδⁿτεΓα≥ⁿ± Ωδα±±ε∞ Thread? ┼±≥ⁿ ΣΓσ Γετ∞εµφε±≥Φ. ┬≥ε≡εΘ ±∩ε±εß ε±εßσφφε ≤Σεßσφ Γ ≥σ⌡ ±δ≤≈α ⌡, ΩεπΣα Γα° Ωδα±± Σεδµσφ ß√≥ⁿ ≤φα±δσΣεΓαφ ε≥ ΩαΩεπε-δΦßε Σ≡≤πεπε Ωδα±±α (φα∩≡Φ∞σ≡, ε≥ Ωδα±±α Applet) Φ ∩≡Φ ²≥ε∞ Γα∞ φ≤µφα ∞φεπε∩ε≥ε≈φε±≥ⁿ. ╥αΩ ΩαΩ Γ τ√Ωσ ∩≡επ≡α∞∞Φ≡εΓαφΦ Java φσ≥ ∞φεµσ±≥Γσφφεπε φα±δσΣεΓαφΦ , φσΓετ∞εµφε ±ετΣα≥ⁿ Ωδα±±, Σδ Ωε≥ε≡επε Γ Ωα≈σ±≥Γσ ≡εΣΦ≥σδⁿ±Ωεπε ß≤Σ≤≥ Γ√±≥≤∩α≥ⁿ Ωδα±±√ Applet Φ Thread. ┬ ²≥ε∞ ±δ≤≈ασ ≡σαδΦτα÷Φ Φφ≥σ≡⌠σΘ±α Runnable Γδ σ≥± σΣΦφ±≥Γσφφ√∞ ±∩ε±εßε∞ ≡σ°σφΦ ταΣα≈Φ. ╠σ≥εΣ√ Ωδα±±α Thread┬ Ωδα±±σ Thread ε∩≡σΣσδσφ√ ≥≡Φ ∩εδ , φσ±ΩεδⁿΩε Ωεφ±≥≡≤Ω≥ε≡εΓ Φ ßεδⁿ°εσ ΩεδΦ≈σ±≥Γε ∞σ≥εΣεΓ, ∩≡σΣφατφα≈σφφ√⌡ Σδ ≡αßε≥√ ± ∩ε≥εΩα∞Φ. ═Φµσ ∞√ ∩≡ΦΓσδΦ Ω≡α≥Ωεσ ε∩Φ±αφΦσ ∩εδσΘ, Ωεφ±≥≡≤Ω≥ε≡εΓ Φ ∞σ≥εΣεΓ. ╤ ∩ε∞ε∙ⁿ■ Ωεφ±≥≡≤Ω≥ε≡εΓ Γ√ ∞εµσ≥σ ±ετΣαΓα≥ⁿ ∩ε≥εΩΦ ≡ατδΦ≈φ√∞Φ ±∩ε±εßα∞Φ, ≤Ωατ√Γα ∩≡Φ φσεß⌡εΣΦ∞ε±≥Φ Σδ φΦ⌡ Φ∞ Φ π≡≤∩∩≤. ╚∞ ∩≡σΣφατφα≈σφε Σδ ΦΣσφ≥Φ⌠ΦΩα÷ΦΦ ∩ε≥εΩα Φ Γδ σ≥± φσεß τα≥σδⁿφ√∞ α≥≡Φß≤≥ε∞. ╫≥ε µσ Ωα±ασ≥± π≡≤∩∩, ≥ε εφΦ ∩≡σΣφατφα≈σφ√ Σδ ε≡παφΦτα÷ΦΦ τα∙Φ≥√ ∩ε≥εΩεΓ Σ≡≤π ε≥ Σ≡≤πα Γ ≡α∞Ωα⌡ εΣφεπε ∩≡ΦδεµσφΦ . ╠σ≥εΣ√ Ωδα±±α Thread ∩≡σΣε±≥αΓδ ■≥ Γ±σ φσεß⌡εΣΦ∞√σ Γετ∞εµφε±≥Φ Σδ ≤∩≡αΓδσφΦ ∩ε≥εΩα∞Φ, Γ ≥ε∞ ≈Φ±δσ Σδ Φ⌡ ±Φφ⌡≡εφΦτα÷ΦΦ. ╧εδ╥≡Φ ±≥α≥Φ≈σ±ΩΦ⌡ ∩εδ ∩≡σΣφατφα≈σφ√ Σδ φατφα≈σφΦ ∩≡Φε≡Φ≥σ≥εΓ ∩ε≥εΩα∞. ═ε≡∞αδⁿφ√Θ public final static int NORM_PRIORITY;
╠αΩ±Φ∞αδⁿφ√Θ public final static int MAX_PRIORITY;
╠ΦφΦ∞αδⁿφ√Θ public final static int MIN_PRIORITY; ╩εφ±≥≡≤Ω≥ε≡√╤ετΣαφΦσ φεΓεπε εß·σΩ≥α Thread public Thread(); ╤ετΣΓαφΦσ φεΓεπε εß·σΩ≥α Thread ± ≤ΩαταφΦσ∞ εß·σΩ≥α, Σδ Ωε≥ε≡επε ß≤Σσ≥ Γ√τ√Γα≥ⁿ± ∞σ≥εΣ run public Thread(Runnable target); └φαδεπΦ≈φε ∩≡σΣ√Σ≤∙σ∞≤, φε Σε∩εδφΦ≥σδⁿφε ταΣασ≥± Φ∞ φεΓεπε εß·σΩ≥α Thread public Thread(Runnable target, String name); ╤ετΣαφΦσ εß·σΩ≥α Thread ± ≤ΩαταφΦσ∞ σπε Φ∞σφΦ public Thread(String name); ╤ετΣαφΦσ φεΓεπε εß·σΩ≥α Thread ± ≤ΩαταφΦσ∞ π≡≤∩∩√ ∩ε≥εΩα Φ εß·σΩ≥α, Σδ Ωε≥ε≡επε Γ√τ√Γασ≥± ∞σ≥εΣ run public Thread(ThreadGroup group, Runnable target); └φαδεπΦ≈φε ∩≡σΣ√Σ≤∙σ∞≤, φε Σε∩εδφΦ≥σδⁿφε ταΣασ≥± Φ∞ φεΓεπε εß·σΩ≥α Thread public Thread(ThreadGroup group, Runnable target, String name); ╤ετΣαφΦσ φεΓεπε εß·σΩ≥α Thread ± ≤ΩαταφΦσ∞ π≡≤∩∩√ ∩ε≥εΩα Φ Φ∞σφΦ εß·σΩ≥α public Thread(ThreadGroup group, String name); ╠σ≥εΣ√
╥σΩ≤∙σσ ΩεδΦ≈σ±≥Γε αΩ≥ΦΓφ√⌡ ∩ε≥εΩεΓ Γ π≡≤∩∩σ, Ω Ωε≥ε≡εΘ ∩≡ΦφαΣδσµΦ≥ ∩ε≥εΩ public static int activeCount();
╥σΩ≤∙σ∞≤ ∩ε≥εΩ≤ ≡ατ≡σ°ασ≥± Φτ∞σφ ≥ⁿ εß·σΩ≥ Thread public void checkAccesss();
╬∩≡σΣσδσφΦσ ΩεδΦ≈σ±≥Γα ⌠≡σΘ∞εΓ Γ ±≥σΩσ public int countStackFrames();
╬∩≡σΣσδσφΦσ ≥σΩ≤∙σπε ≡αßε≥α■∙σπε ∩ε≥εΩα public static Thread currentThread();
╧≡Φφ≤ΣΦ≥σδⁿφεσ ταΓσ≡°σφΦσ ≡αßε≥√ ∩ε≥εΩα public void destroy();
┬√ΓεΣ ≥σΩ≤∙σπε ±εΣσ≡µΦ∞επε ±≥σΩα Σδ ε≥δαΣΩΦ public static void dumpStack();
╧εδ≤≈σφΦσ Γ±σ⌡ εß·σΩ≥εΓ Tread ΣαφφεΘ π≡≤∩∩√ public static int enumerate(Thread tarray[]);
╬∩≡σΣσδσφΦσ Φ∞σφΦ ∩ε≥εΩα public final String getName();
╬∩≡σΣσδσφΦσ ≥σΩ≤∙σπε ∩≡Φε≡Φ≥σ≥α ∩ε≥εΩα public final int getPriority();
╬∩≡σΣσδσφΦσ π≡≤∩∩√, Ω Ωε≥ε≡εΘ ∩≡ΦφαΣδσµΦ≥ ∩ε≥εΩ public final ThreadGroup getThreadGroup();
╧≡σ≡√ΓαφΦσ ∩ε≥εΩα public void interrupt();
╬∩≡σΣσδσφΦσ, Γδ σ≥± δΦ ∩ε≥εΩ ∩≡σ≡Γαφφ√∞ public static boolean interrupted();
╬∩≡σΣσδσφΦσ, Γ√∩εδφ σ≥± ∩ε≥εΩ ΦδΦ φσ≥ public final boolean isAlive();
╬∩≡σΣσδσφΦσ, Γδ σ≥± δΦ ∩ε≥εΩ Σσ∞εφε∞ public final boolean isDaemon();
╬∩≡σΣσδσφΦσ, Γδ σ≥± δΦ ∩ε≥εΩ ∩≡σ≡Γαφφ√∞ public boolean isInterrupted();
╬µΦΣαφΦσ ταΓσ≡°σφΦ ∩ε≥εΩα public final void join(); ╬µΦΣαφΦσ ταΓσ≡°σφΦ ∩ε≥εΩα Γ ≥σ≈σφΦσ ταΣαφφεπε Γ≡σ∞σφΦ. ┬≡σ∞ ταΣασ≥± Γ ∞ΦδδΦ±σΩ≤φΣα⌡ public final void join(long millis); ╬µΦΣαφΦσ ταΓσ≡°σφΦ ∩ε≥εΩα Γ ≥σ≈σφΦσ ταΣαφφεπε Γ≡σ∞σφΦ. ┬≡σ∞ ταΣασ≥± Γ ∞ΦδδΦ±σΩ≤φΣα⌡ Φ φαφε±σΩ≤φΣα⌡ public final void join(long millis, int nanos);
╟α∩≤±Ω Γ≡σ∞σφφε ∩≡Φε±≥αφεΓδσφφεπε ∩ε≥εΩα public final void resume();
╠σ≥εΣ Γ√τ√Γασ≥± Γ ≥ε∞ ±δ≤≈ασ, σ±δΦ ∩ε≥εΩ ß√δ ±ετΣαφ ΩαΩ εß·σΩ≥ ± Φφ≥σ≡⌠σΘ±ε∞ Runnable public void run();
╙±≥αφεΓΩα Σδ ∩ε≥εΩα ≡σµΦ∞α Σσ∞εφα public final void setDaemon(boolean on);
╙±≥αεΓΩα Φ∞σφΦ ∩ε≥εΩα public final void setName(String name);
╙±≥αφεΓΩα ∩≡Φε≡Φ≥σ≥α ∩ε≥εΩα public final void setPriority(int newPriority);
╟αΣσ≡µΩα ∩ε≥εΩα φα ταΣφφεσ Γ≡σ∞ . ┬≡σ∞ ταΣασ≥± Γ ∞ΦδδΦ±σΩ≤φΣα⌡ Φ φαφε±σΩ≤φΣα⌡ public static void sleep(long millis); ╟αΣσ≡µΩα ∩ε≥εΩα φα ταΣφφεσ Γ≡σ∞ . ┬≡σ∞ ταΣασ≥± Γ ∞ΦδδΦ±σΩ≤φΣα⌡ Φ φαφε±σΩ≤φΣα⌡ public static void sleep(long millis, int nanos);
╟α∩≤±Ω ∩ε≥εΩα φα Γ√∩εδφσφΦσ public void start();
╬±≥αφεΓΩα Γ√∩εδφσφΦ ∩ε≥εΩα public final void stop(); └Γα≡ΦΘφα ε±≥αφεΓΩα Γ√∩εδφσφΦ ∩ε≥εΩα ± ταΣαφφ√∞ Φ±Ωδ■≈σφΦσ∞ public final void stop(Throwable obj);
╧≡Φε±≥αφεΓΩα ∩ε≥εΩα public final void suspend();
╤≥≡εΩα, ∩≡σΣ±≥αΓδ ■∙α εß·σΩ≥-∩ε≥εΩ public String toString();
╧≡Φε±≥αφεΓΩα ≥σΩ≤∙σπε ∩ε≥εΩα Σδ ≥επε ≈≥εß√ ≤∩≡αΓδσφΦσ ß√δε ∩σ≡σΣαφε Σ≡≤πε∞≤ ∩ε≥εΩ≤ public static void yield(); ╤ετΣαφΦσ Σε≈σ≡φσπε Ωδα±±α φα ßατσ Ωδα±±α Thread╨α±±∞ε≥≡Φ∞ ∩σ≡Γ√Θ ±∩ε±εß ≡σαδΦτα÷ΦΦ ∞φεπε∩ε≥ε≈φε±≥Φ, ε±φεΓαφφ√Θ φα φα±δσΣεΓαφΦΦ ε≥ Ωδα±±α Thread. ╧≡Φ Φ±∩εδⁿτεΓαφΦΦ ²≥επε ±∩ε±εßα Γ√ ε∩≡σΣσδ σ≥σ Σδ ∩ε≥εΩα ε≥Σσδⁿφ√Θ Ωδα±±, φα∩≡Φ∞σ≡, ≥αΩ: class DrawRectangles extends Thread { . . . public void run() { . . . } } ╟Σσ±ⁿ ε∩≡σΣσδσφ Ωδα±± DrawRectangles, Ωε≥ε≡√Θ Γδ σ≥± Σε≈σ≡φΦ∞ ∩ε ε≥φε°σφΦ■ Ω Ωδα±±≤ Thread. ╬ß≡α≥Φ≥σ ΓφΦ∞αφΦσ φα ∞σ≥εΣ run. ╤ετΣαΓα ±ΓεΘ Ωδα±± φα ßατσ Ωδα±±α Thread, Γ√ Σεδµφ√ Γ±σπΣα ε∩≡σΣσδ ≥ⁿ ²≥ε≥ ∞σ≥εΣ, Ωε≥ε≡√Θ Φ ß≤Σσ≥ Γ√∩εδφ ≥ⁿ± Γ ≡α∞Ωα⌡ ε≥Σσδⁿφεπε ∩ε≥εΩα. ╟α∞σ≥Φ∞, ≈≥ε ∞σ≥εΣ run φσ Γ√τ√Γασ≥± φα∩≡ ∞≤■ φΦΩαΩΦ∞Φ Σ≡≤πΦ∞Φ ∞σ≥εΣα∞Φ. ╬φ ∩εδ≤≈ασ≥ ≤∩≡αΓδσφΦσ ∩≡Φ τα∩≤±Ωσ ∩ε≥εΩα ∞σ≥εΣε∞ start. ╩αΩ ²≥ε ∩≡εΦ±⌡εΣΦ≥? ╨α±±∞ε≥≡Φ∞ ∩≡ε÷σΣ≤≡≤ τα∩≤±Ωα ∩ε≥εΩα φα ∩≡Φ∞σ≡σ φσΩε≥ε≡επε Ωδα±±α DrawRectangles. ┬φα≈αδσ Γα°σ ∩≡ΦδεµσφΦσ Σεδµφε ±ετΣα≥ⁿ εß·σΩ≥ Ωδα±±α Thread: public class MultiTask2 extends Applet { Thread m_DrawRectThread = null; . . . public void start() { if (m_DrawRectThread == null) { m_DrawRectThread = new DrawRectangles(this); m_DrawRectThread.start(); } } } ╤ετΣαφΦσ εß·σΩ≥α Γ√∩εδφ σ≥± ε∩σ≡α≥ε≡ε∞ new Γ ∞σ≥εΣσ start, Ωε≥ε≡√Θ ∩εδ≤≈ασ≥ ≤∩≡αΓδσφΦσ, ΩεπΣα ∩εδⁿτεΓα≥σδⁿ ε≥Ω≡√Γασ≥ ΣεΩ≤∞σφ≥ HTML ± α∩δσ≥ε∞. ╤≡ατ≤ ∩ε±δσ ±ετΣαφΦ ∩ε≥εΩ τα∩≤±Ωασ≥± φα Γ√∩εδφσφΦσ, Σδ ≈σπε Γ√τ√Γασ≥± ∞σ≥εΣ start. ╫≥ε Ωα±ασ≥± ∞σ≥εΣα run, ≥ε σ±δΦ ∩ε≥εΩ Φ±∩εδⁿτ≤σ≥± Σδ Γ√∩εδφσφΦ ΩαΩεΘ δΦßε ∩σ≡ΦεΣΦ≈σ±ΩεΘ ≡αßε≥√, ≥ε ²≥ε≥ ∞σ≥εΣ ±εΣσ≡µΦ≥ Γφ≤≥≡Φ ±σß ßσ±Ωεφσ≈φ√Θ ÷ΦΩδ. ╩επΣα ÷ΦΩδ ταΓσ≡°ασ≥± Φ ∞σ≥εΣ run ΓετΓ≡α∙ασ≥ ≤∩≡αΓδσφΦσ, ∩ε≥εΩ ∩≡σΩ≡α∙ασ≥ ±Γε■ ≡αßε≥≤ φε≡∞αδⁿφ√∞, φσ αΓα≡ΦΘφ√∞ εß≡ατε∞. ─δ αΓα≡ΦΘφεπε ταΓσ≡°σφΦ ∩ε≥εΩα ∞εµφε Φ±∩εδⁿτεΓα≥ⁿ ∞σ≥εΣ interrupt. ╬±≥αφεΓΩα ≡αßε≥α■∙σπε ∩ε≥εΩα Γ√∩εδφ σ≥± ∞σ≥εΣε∞ stop. ╬ß√≈φε ε±≥αφεΓΩα Γ±σ⌡ ≡αßε≥α■∙Φ⌡ ∩ε≥εΩεΓ, ±ετΣαφφ√⌡ α∩δσ≥ε∞, Γ√∩εδφ σ≥± ∞σ≥εΣε∞ stop Ωδα±±α α∩δσ≥α: public void stop() { if (m_DrawRectThread != null) { m_DrawRectThread.stop(); m_DrawRectThread = null; } } ═α∩ε∞φΦ∞, ≈≥ε ²≥ε≥ ∞σ≥εΣ Γ√τ√Γασ≥± , ΩεπΣα ∩εδⁿτεΓα≥σδⁿ ∩εΩΦΣασ≥ ±≥≡αφΦ÷≤ ±σ≡Γσ≡α Web, ±εΣσ≡µα∙≤■ α∩δσ≥. ╨σαδΦτα÷Φ Φφ≥σ≡⌠σΘ±α Runnable╬∩Φ±αφφ√Θ Γ√°σ ±∩ε±εß ±ετΣαφΦ ∩ε≥εΩεΓ ΩαΩ εß·σΩ≥εΓ Ωδα±±α Thread ΦδΦ ≤φα±δσΣεΓαφφ√⌡ ε≥ φσπε Ωδα±±εΓ Ωαµσ≥± Σε±≥α≥ε≈φαε σ±≥σ±≥Γσφφ√∞. ╬ΣφαΩε ²≥ε≥ ±∩ε±εß φσ σΣΦφ±≥Γσφφ√Θ. ┼±δΦ Γα∞ φ≤µφε ±ετΣα≥ⁿ ≥εδⁿΩε εΣΦφ ∩ε≥εΩ, ≡αßε≥α■∙≤■ εΣφεΓ≡σ∞σφφε ± ΩεΣε∞ α∩δσ≥α, ∩≡ε∙σ Γ√ß≡α≥ⁿ Γ≥ε≡εΘ ±∩ε±εß ± Φ±∩εδⁿτεΓαφΦσ∞ Φφ≥σ≡⌠σΘ±α Runnable. ╚Σσ ταΩδ■≈ασ≥± Γ ≥ε∞, ≈≥ε ε±φεΓφεΘ Ωδα±± α∩δσ≥α, Ωε≥ε≡√Θ Γδ σ≥± Σε≈σ≡φΦ∞ ∩ε ε≥φε°σφΦ■ Ω Ωδα±±≤ Applet, Σε∩εδφΦ≥σδⁿφε ≡σαδΦτ≤σ≥ Φφ≥σ≡⌠σΘ± Runnable, ΩαΩ ²≥ε ∩εΩαταφε φΦµσ: public class MultiTask extends Applet implements Runnable { Thread m_MultiTask = null; . . . public void run() { . . . } public void start() { if (m_MultiTask == null) { m_MultiTask = new Thread(this); m_MultiTask.start(); } } public void stop() { if (m_MultiTask != null) { m_MultiTask.stop(); m_MultiTask = null; } } } ┬φ≤≥≡Φ Ωδα±±α φσεß⌡εΣΦ∞ε ε∩≡σΣσδΦ≥ⁿ ∞σ≥εΣ run, Ωε≥ε≡√Θ ß≤Σσ≥ Γ√∩εδφ ≥ⁿ± Γ ≡α∞Ωα⌡ ε≥Σσδⁿφεπε ∩ε≥εΩα. ╧≡Φ ²≥ε∞ ∞εµφε ±≈Φ≥α≥ⁿ, ≈≥ε ΩεΣ α∩δσ≥α Φ ΩεΣ ∞σ≥εΣα run ≡αßε≥α■≥ εΣφεΓ≡σ∞σφφε ΩαΩ ≡ατφ√σ ∩ε≥εΩΦ. ─δ ±ετΣαφΦ ∩ε≥εΩα Φ±∩εδⁿτ≤σ≥± ε∩σ≡α≥ε≡ new. ╧ε≥εΩ ±ετΣασ≥± ΩαΩ εß·σΩ≥ Ωδα±±α Thread, ∩≡Φ≈σ∞ Ωεφ±≥≡≤Ω≥ε≡≤ ∩σ≡σΣασ≥± ±±√δΩα φα Ωδα±± α∩δσ≥α: m_MultiTask = new Thread(this); ╧≡Φ ²≥ε∞, ΩεπΣα ∩ε≥εΩ τα∩≤±≥Φ≥± , ≤∩≡αΓδσφΦσ ∩εδ≤≈Φ≥ ∞σ≥εΣ run, ε∩≡σΣσδσφφ√Θ Γ Ωδα±±σ α∩δσ≥α. ╩αΩ τα∩≤±≥Φ≥ⁿ ∩ε≥εΩ? ╟α∩≤±Ω Γ√∩εδφ σ≥± , ΩαΩ Φ ≡αφⁿ°σ, ∞σ≥εΣε∞ start. ╬ß√≈φε ∩ε≥εΩ τα∩≤±Ωασ≥± Φτ ∞σ≥εΣα start α∩δσ≥α, ΩεπΣα ∩εδⁿτεΓα≥σδⁿ ε≥εß≡αµασ≥ ±≥≡αφΦ÷≤ ±σ≡Γσ≡α Web, ±εΣσ≡µα∙≤■ α∩δσ≥. ╬±≥αφεΓΩα ∩ε≥εΩα Γ√∩εδφ σ≥± ∞σ≥εΣε∞ stop. |